今天是第三天,一整天上課下來快沒力了,但還是要繼續學習!加油~
題外話:這幾天開始寫文章,才發現自己表達的不是很好,也看了很多高手寫的文章,有的人真的是投入非常多時間和精力在發文,我認為他們都好努力好用心,我想自己也不可以認輸,為了增加自己的實力,應該花更多時間消化,並且好好的打成完整的文章,而非私人筆記的樣子,我想對於之後自己回來看應該也更有心得吧,甚至可以幫助到其他人一點點就更好了。
本文:接續昨天內容"The history of ML: Perceptron"
Perceptron的概念起源自1940s,由Frank Rosenblatt提出一個模仿人類腦神經構造的計算模型並且可以學習簡單的方程式.最簡單的Perceptron為單層,傳遞方向單一,是由input(輸入)乘上weight後加總,在經過一個'activation function, a.k.a 激活函數',最後輸出。 訓練的過程就是去調整weight,使得error越來越小,最終收斂。
這個模型為什麼是模仿人類的神經元呢?簡單來說:
input->Dendrite
Nucleus->Perceptron neuron
Axon->output
electrical potential 機制 -> activation function 功能
"The history of ML: Neural Networks"
結合多層Perceptron可以使得model參數變多,變得更加強大,然而你需要使用非線性的激活函數(non-linear activation function),否則使用再多層線性激活函數也只是如同一個線性函數而已.因此非線性函數非常重要,如:sigmoid,hyperbolic tangent(tanh).同時我們需要可以微分的激活函數(Relu看起來不可微,其實oK的!),以方便用反向傳播法找尋最小誤差.
perceptron連接方式也不一定要單層一個,可以是單層多個,如此一來input會變成muiti-dimension matrix.另外連接方式也不一定要全連接,後續介紹的CNN就是部份連接共享權重。總而言之perceptron可以組成neural network,整個NN可以拆程三個部份:
First: weight and sum
Second: activation function
Third: output from activation function
以下簡單介紹 AF:
sigmoid:0~1
Tanh:-1~1
缺點: 在high or low input時會趨近飽和,此時微分值會變很小,如此一來梯度平緩,對於梯度下降法來說,訓練的過程會很慢。
Relu: input < 0 , output = 0
不會有飽和問題,但可能都一直為零導致訓練停止。
ELU: Relu 改良,有<0的負值。
Question:如果要估算機率,那一個激活函數適合?
Answer: sigmoid,probability is from 0 to 1.
Next: The history of ML: Decision Trees
今日暫且打住,去coding啦~
明天繼續加油!